package com.cpp.server.controller;

import com.cpp.common.constant.ModuleConstant;
import com.cpp.common.result.PageResult;
import com.cpp.common.result.Result;
import com.cpp.pojo.dto.course.CourseCreateDTO;
import com.cpp.pojo.dto.course.CoursePageDTO;
import com.cpp.pojo.dto.course.CourseUpdateDTO;
import com.cpp.server.aspect.annotation.MyLog;
import com.cpp.server.service.CourseService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RequiredArgsConstructor
@RestController
@RequestMapping("/course")
@MyLog(module = ModuleConstant.OTHERS)
public class CourseController {
    private final CourseService courseService;
//     ->分页查询选课列表                           ->保存选择课程信息                         ->分页查询已选择选课列表                        ->批量取消课程接口
//列表查询当前已有课程          生成章节及其对应知识点和练习题返回第一章节资源                      无操作                             保存翻页前的课程资源，并调取展示的章节资源

    //分页查询课程列表
    @GetMapping("/list")
    public Result<PageResult> listCourse(CoursePageDTO coursePageDTO){
        PageResult pageResult =  courseService.pageCourse(coursePageDTO);
        return Result.success(pageResult);
    }
    //保存选择课程信息
    @PostMapping("/save")
    public Result saveCourse(@RequestParam List<Long> ids){
        courseService.saveSelectCourse(ids);
        return Result.success();
    }
    //分页查询学生已选择选课列表
    @GetMapping("/listSelectCourse")
    public Result<PageResult> listSelectCourse(CoursePageDTO coursePageDTO){
        PageResult studentCourseVOs = courseService.pageSelectedCourse(coursePageDTO);
        return Result.success(studentCourseVOs);
    }
    //取消课程
    @DeleteMapping("/Cancel")
    public Result deleteSelectCourse(@RequestParam List<Long> ids){
        courseService.deleteSelectCourse(ids);
        return Result.success();
    }


    //增加课程
    @MyLog(module = ModuleConstant.PRE_CLASS)
    @PostMapping("/add")
    public Result addCourse(@RequestBody CourseCreateDTO courseCreateDTO){
        courseService.saveCourse(courseCreateDTO);
        return Result.success();
    }
    //修改课程
    @MyLog(module = ModuleConstant.PRE_CLASS)
    @PutMapping("/update")
    public Result updateCourse(@RequestBody CourseUpdateDTO courseUpdateDTO){
        courseService.updateCourse(courseUpdateDTO);
        return Result.success();
    }

    //删除课程
    @MyLog(module = ModuleConstant.PRE_CLASS)
    @DeleteMapping("/delete")
    public Result deleteCourse(@RequestParam List<Long> ids){
        courseService.removeCourse(ids);
        return Result.success();
    }

}

